package com.sms.sendservice.service;

import com.sms.common.result.Result;

import java.time.LocalDateTime;
import java.util.List;

public interface SmsSendService {
    
    /**
     * 立即发送短信
     */
    Result<String> sendSms(String phoneNumber, String content, Long templateId, Long userId);
    
    /**
     * 定时发送短信
     */
    Result<String> sendSmsAtTime(String phoneNumber, String content, Long templateId, Long userId, LocalDateTime sendTime);
    
    /**
     * 批量发送短信
     */
    Result<String> batchSendSms(List<String> phoneNumbers, String content, Long templateId, Long userId);
    
    /**
     * 智能路由选择最优通道
     */
    String selectBestChannel(String phoneNumber, String content);
    
    /**
     * 通道切换（故障时自动切换）
     */
    String switchChannel(String phoneNumber, String failedChannelCode);
    
    /**
     * 失败重试
     */
    Result<String> retrySendSms(String taskId);
    
    /**
     * 获取发送状态
     */
    Result<Object> getSendStatus(String taskId);
    
    /**
     * 取消发送任务
     */
    Result<String> cancelSendTask(String taskId);
} 